import json
from typing import Dict, List, Tuple
####################
#       MBTI       #
####################
# 存储心理测试题目
mbti_tests = {
    "title": "MBTI 性格测试问卷",
    "description": "下面这一问卷用于提醒你是如何对待事物以及如何做决定的，答案无好坏之分，问卷结果有助于你了解自己的职业倾向、个性特征、人际相处的特征。请仔细阅读每一个问题，答案直接写在题目上面。不必对问题想的太多，根据第一感觉答复即可。",
    "sections": [
        {
            "part": "第一部分",
            "description": "哪一答案最接近地描述了你通常的思考和行为方式",
            "questions": [
                {
                    "id": 1,
                    "text": "当你想去某天某个地方，你会?",
                    "options": [
                        {"code": "A", "text": "方案好将做的事情以及何时做"},
                        {"code": "B", "text": "什么都不想就去"},
                    ],
                },
                {
                    "id": 2,
                    "text": "如果你是一位教师，你愿教?",
                    "options": [
                        {"code": "A", "text": "涉及事实的课程"},
                        {"code": "B", "text": "涉及理论的课程"},
                    ],
                },
                {
                    "id": 3,
                    "text": "你通常是?",
                    "options": [
                        {"code": "A", "text": "一个善于交际的人"},
                        {"code": "B", "text": "安静沉默的人"},
                    ],
                },
                {
                    "id": 4,
                    "text": "你喜欢?",
                    "options": [
                        {"code": "A", "text": "事先安排好约会，聚会等"},
                        {"code": "B", "text": "只要时机恰当就无拘无束地做任何有趣的事"},
                    ],
                },
                {
                    "id": 5,
                    "text": "你通常和相处得更好?",
                    "options": [
                        {"code": "A", "text": "想象力丰富的人"},
                        {"code": "B", "text": "现实的人"},
                    ],
                },
                {
                    "id": 6,
                    "text": "往往，你是?",
                    "options": [
                        {"code": "A", "text": "情感驾驭理智"},
                        {"code": "B", "text": "理智驾驭情感"},
                    ],
                },
                {
                    "id": 7,
                    "text": "当你和一群人在一起时，你会?",
                    "options": [
                        {"code": "A", "text": "参加大家的谈话"},
                        {"code": "B", "text": "只同你熟知的人单独谈话"},
                    ],
                },
                {
                    "id": 8,
                    "text": "你更喜欢做多数事情?",
                    "options": [
                        {"code": "A", "text": "即兴时"},
                        {"code": "B", "text": "有方案地"},
                    ],
                },
                {
                    "id": 9,
                    "text": "你愿意自己被认为是一个?",
                    "options": [
                        {"code": "A", "text": "善于动手的人"},
                        {"code": "B", "text": "善于创意的人"},
                    ],
                },
                {
                    "id": 10,
                    "text": "在大群体中，你常更多地?",
                    "options": [
                        {"code": "A", "text": "介绍他人"},
                        {"code": "B", "text": "由别人来介绍你"},
                    ],
                },
                {
                    "id": 11,
                    "text": "你更喜欢?",
                    "options": [
                        {"code": "A", "text": "头脑灵活的人"},
                        {"code": "B", "text": "务实且有丰富常识的人"},
                    ],
                },
                {
                    "id": 12,
                    "text": "按日程表办事?",
                    "options": [
                        {"code": "A", "text": "正合你意"},
                        {"code": "B", "text": "束缚了你"},
                    ],
                },
                {
                    "id": 13,
                    "text": "你觉得通常别人要花费?",
                    "options": [
                        {"code": "A", "text": "很久来了解你"},
                        {"code": "B", "text": "一小段时间来了解你"},
                    ],
                },
                {
                    "id": 14,
                    "text": "对于制定周末方案，你觉得?",
                    "options": [
                        {"code": "A", "text": "很有必要"},
                        {"code": "B", "text": "没必要"},
                    ],
                },
                {
                    "id": 15,
                    "text": "被称为是更高的赞赏?",
                    "options": [
                        {"code": "A", "text": "感性的人"},
                        {"code": "B", "text": "一贯理性的人"},
                    ],
                },
                {
                    "id": 16,
                    "text": "多数时候，你倾向于?",
                    "options": [
                        {"code": "A", "text": "独处"},
                        {"code": "B", "text": "同他人在一起"},
                    ],
                },
                {
                    "id": 17,
                    "text": "日常工作中，你喜欢?",
                    "options": [
                        {"code": "A", "text": "在时间紧迫的情况下争分夺秒地工作"},
                        {
                            "code": "B",
                            "text": "通常先安排好工作并加以完成，以免压力过大",
                        },
                    ],
                },
                {
                    "id": 18,
                    "text": "你愿把作为朋友?",
                    "options": [
                        {"code": "A", "text": "常有新观点的人"},
                        {"code": "B", "text": "脚踏实地的人"},
                    ],
                },
                {
                    "id": 19,
                    "text": "你能否?",
                    "options": [
                        {"code": "A", "text": "只要愿意就能轻松地同几乎任何人说个没完"},
                        {
                            "code": "B",
                            "text": "只能在特定场合下或同特定的人才愿意讲许多话",
                        },
                    ],
                },
                {
                    "id": 20,
                    "text": "当有一项特殊工作时，你会?",
                    "options": [
                        {"code": "A", "text": "在开场前精心组织筹划"},
                        {"code": "B", "text": "在工作进展中找出必要环节"},
                    ],
                },
                {
                    "id": 21,
                    "text": "你更倾向于?",
                    "options": [
                        {"code": "A", "text": "感性地做事"},
                        {"code": "B", "text": "依逻辑行事"},
                    ],
                },
                {
                    "id": 22,
                    "text": "当你为了消遣而阅读时，你?",
                    "options": [
                        {"code": "A", "text": "欣赏奇特新颖的表达方式"},
                        {"code": "B", "text": "喜欢作者确切地表达其意思"},
                    ],
                },
                {
                    "id": 23,
                    "text": "你新认识的人说出你的兴趣所在?",
                    "options": [
                        {"code": "A", "text": "马上就能"},
                        {"code": "B", "text": "只有当他们真正了解你之后才能"},
                    ],
                },
                {
                    "id": 24,
                    "text": "在方案一次旅行时，你更喜欢?",
                    "options": [
                        {"code": "A", "text": "在多数情况下随心所欲地行事"},
                        {"code": "B", "text": "事先就知道在大局部日子所将做的事情"},
                    ],
                },
                {
                    "id": 25,
                    "text": "做很多人都会做的事情时，你喜欢?",
                    "options": [
                        {"code": "A", "text": "按惯例做"},
                        {"code": "B", "text": "按自己独创的方式做"},
                    ],
                },
                {
                    "id": 26,
                    "text": "多数人认为你?",
                    "options": [
                        {"code": "A", "text": "不太把自己的事情告诉别人"},
                        {"code": "B", "text": "非常坦率"},
                    ],
                },
            ],
        },
        {
            "part": "第二部分",
            "description": "在以下各对词中，你更倾向于哪一个。请考虑以下这些词真正的意义和内涵，而不是它们好不好听、词汇是褒义还是贬义。",
            "questions": [
                {
                    "id": 27,
                    "text": "A. 抽象 B. 实在",
                    "options": [
                        {"code": "A", "text": "抽象"},
                        {"code": "B", "text": "实在"},
                    ],
                },
                {
                    "id": 28,
                    "text": "A. 有方案 B. 随意",
                    "options": [
                        {"code": "A", "text": "有方案"},
                        {"code": "B", "text": "随意"},
                    ],
                },
                {
                    "id": 29,
                    "text": "A. 温柔 B. 坚硬",
                    "options": [
                        {"code": "A", "text": "温柔"},
                        {"code": "B", "text": "坚硬"},
                    ],
                },
                {
                    "id": 30,
                    "text": "A. 事实 B. 观点",
                    "options": [
                        {"code": "A", "text": "事实"},
                        {"code": "B", "text": "观点"},
                    ],
                },
                {
                    "id": 31,
                    "text": "A. 思考 B. 感觉",
                    "options": [
                        {"code": "A", "text": "思考"},
                        {"code": "B", "text": "感觉"},
                    ],
                },
                {
                    "id": 32,
                    "text": "A. 热情 B. 安静",
                    "options": [
                        {"code": "A", "text": "热情"},
                        {"code": "B", "text": "安静"},
                    ],
                },
                {
                    "id": 33,
                    "text": "A. 晓之以理 B. 动之以情",
                    "options": [
                        {"code": "A", "text": "晓之以理"},
                        {"code": "B", "text": "动之以情"},
                    ],
                },
                {
                    "id": 34,
                    "text": "A. 陈述 B. 观念",
                    "options": [
                        {"code": "A", "text": "陈述"},
                        {"code": "B", "text": "观念"},
                    ],
                },
                {
                    "id": 35,
                    "text": "A. 分析 B. 认同",
                    "options": [
                        {"code": "A", "text": "分析"},
                        {"code": "B", "text": "认同"},
                    ],
                },
                {
                    "id": 36,
                    "text": "A. 系统的 B. 自发的",
                    "options": [
                        {"code": "A", "text": "系统的"},
                        {"code": "B", "text": "自发的"},
                    ],
                },
                {
                    "id": 37,
                    "text": "A. 敏感 B. 合理",
                    "options": [
                        {"code": "A", "text": "敏感"},
                        {"code": "B", "text": "合理"},
                    ],
                },
                {
                    "id": 38,
                    "text": "A. 沉默 B. 健谈",
                    "options": [
                        {"code": "A", "text": "沉默"},
                        {"code": "B", "text": "健谈"},
                    ],
                },
                {
                    "id": 39,
                    "text": "A. 事实的 B. 理论的",
                    "options": [
                        {"code": "A", "text": "事实的"},
                        {"code": "B", "text": "理论的"},
                    ],
                },
                {
                    "id": 40,
                    "text": "A. 同情怜悯 B. 深谋远虑",
                    "options": [
                        {"code": "A", "text": "同情怜悯"},
                        {"code": "B", "text": "深谋远虑"},
                    ],
                },
                {
                    "id": 41,
                    "text": "A. 系统 B. 随机",
                    "options": [
                        {"code": "A", "text": "系统"},
                        {"code": "B", "text": "随机"},
                    ],
                },
                {
                    "id": 42,
                    "text": "A. 文静 B. 开朗",
                    "options": [
                        {"code": "A", "text": "文静"},
                        {"code": "B", "text": "开朗"},
                    ],
                },
                {
                    "id": 43,
                    "text": "A. 利益 B. 祝福",
                    "options": [
                        {"code": "A", "text": "利益"},
                        {"code": "B", "text": "祝福"},
                    ],
                },
                {
                    "id": 44,
                    "text": "A. 推测 B. 确定",
                    "options": [
                        {"code": "A", "text": "推测"},
                        {"code": "B", "text": "确定"},
                    ],
                },
                {
                    "id": 45,
                    "text": "A. 坚决 B. 热忱",
                    "options": [
                        {"code": "A", "text": "坚决"},
                        {"code": "B", "text": "热忱"},
                    ],
                },
                {
                    "id": 46,
                    "text": "A. 理想 B. 现实",
                    "options": [
                        {"code": "A", "text": "理想"},
                        {"code": "B", "text": "现实"},
                    ],
                },
                {
                    "id": 47,
                    "text": "A. 意志坚强 B. 慈悲心肠",
                    "options": [
                        {"code": "A", "text": "意志坚强"},
                        {"code": "B", "text": "慈悲心肠"},
                    ],
                },
                {
                    "id": 48,
                    "text": "A. 想象的 B. 事实的",
                    "options": [
                        {"code": "A", "text": "想象的"},
                        {"code": "B", "text": "事实的"},
                    ],
                },
                {
                    "id": 49,
                    "text": "A. 客观的 B. 易动情的",
                    "options": [
                        {"code": "A", "text": "客观的"},
                        {"code": "B", "text": "易动情的"},
                    ],
                },
                {
                    "id": 50,
                    "text": "A. 制作 B. 创造",
                    "options": [
                        {"code": "A", "text": "制作"},
                        {"code": "B", "text": "创造"},
                    ],
                },
                {
                    "id": 51,
                    "text": "A. 热情 B. 客观",
                    "options": [
                        {"code": "A", "text": "热情"},
                        {"code": "B", "text": "客观"},
                    ],
                },
                {
                    "id": 52,
                    "text": "A. 实用的 B. 迷人的",
                    "options": [
                        {"code": "A", "text": "实用的"},
                        {"code": "B", "text": "迷人的"},
                    ],
                },
                {
                    "id": 53,
                    "text": "A. 有同情心 B. 有逻辑头脑",
                    "options": [
                        {"code": "A", "text": "有同情心"},
                        {"code": "B", "text": "有逻辑头脑"},
                    ],
                },
                {
                    "id": 54,
                    "text": "A. 制造 B. 设计",
                    "options": [
                        {"code": "A", "text": "制造"},
                        {"code": "B", "text": "设计"},
                    ],
                },
                {
                    "id": 55,
                    "text": "A. 冲动 B. 决定",
                    "options": [
                        {"code": "A", "text": "冲动"},
                        {"code": "B", "text": "决定"},
                    ],
                },
                {
                    "id": 56,
                    "text": "A. 公正的 B. 体谅的",
                    "options": [
                        {"code": "A", "text": "公正的"},
                        {"code": "B", "text": "体谅的"},
                    ],
                },
                {
                    "id": 57,
                    "text": "A. 文静 B. 爱交际",
                    "options": [
                        {"code": "A", "text": "文静"},
                        {"code": "B", "text": "爱交际"},
                    ],
                },
                {
                    "id": 58,
                    "text": "A. 理性 B. 感性",
                    "options": [
                        {"code": "A", "text": "理性"},
                        {"code": "B", "text": "感性"},
                    ],
                },
                {
                    "id": 59,
                    "text": "A. 不受限制的 B. 安排好的",
                    "options": [
                        {"code": "A", "text": "不受限制的"},
                        {"code": "B", "text": "安排好的"},
                    ],
                },
                {
                    "id": 60,
                    "text": "A. 详实 B. 概括",
                    "options": [
                        {"code": "A", "text": "详实"},
                        {"code": "B", "text": "概括"},
                    ],
                },
                {
                    "id": 61,
                    "text": "A. 注重实际的 B. 感情丰富的",
                    "options": [
                        {"code": "A", "text": "注重实际的"},
                        {"code": "B", "text": "感情丰富的"},
                    ],
                },
                {
                    "id": 62,
                    "text": "A. 公开的 B. 私人的",
                    "options": [
                        {"code": "A", "text": "公开的"},
                        {"code": "B", "text": "私人的"},
                    ],
                },
                {
                    "id": 63,
                    "text": "A. 建造 B. 创造",
                    "options": [
                        {"code": "A", "text": "建造"},
                        {"code": "B", "text": "创造"},
                    ],
                },
                {
                    "id": 64,
                    "text": "A. 有序的 B. 随便的",
                    "options": [
                        {"code": "A", "text": "有序的"},
                        {"code": "B", "text": "随便的"},
                    ],
                },
                {
                    "id": 65,
                    "text": "A. 想象的 B. 现实的",
                    "options": [
                        {"code": "A", "text": "想象的"},
                        {"code": "B", "text": "现实的"},
                    ],
                },
                {
                    "id": 66,
                    "text": "A. 称职的 B. 好心的",
                    "options": [
                        {"code": "A", "text": "称职的"},
                        {"code": "B", "text": "好心的"},
                    ],
                },
                {
                    "id": 67,
                    "text": "A. 理论 B. 事实",
                    "options": [
                        {"code": "A", "text": "理论"},
                        {"code": "B", "text": "事实"},
                    ],
                },
                {
                    "id": 68,
                    "text": "A. 少许朋友 B. 很多朋友",
                    "options": [
                        {"code": "A", "text": "少许朋友"},
                        {"code": "B", "text": "很多朋友"},
                    ],
                },
                {
                    "id": 69,
                    "text": "A. 可能性 B. 必然性",
                    "options": [
                        {"code": "A", "text": "可能性"},
                        {"code": "B", "text": "必然性"},
                    ],
                },
                {
                    "id": 70,
                    "text": "A. 宽容 B. 坚决",
                    "options": [
                        {"code": "A", "text": "宽容"},
                        {"code": "B", "text": "坚决"},
                    ],
                },
                {
                    "id": 71,
                    "text": "A. 新颖的 B. 传统的",
                    "options": [
                        {"code": "A", "text": "新颖的"},
                        {"code": "B", "text": "传统的"},
                    ],
                },
                {
                    "id": 72,
                    "text": "A. 温和 B. 力量",
                    "options": [
                        {"code": "A", "text": "温和"},
                        {"code": "B", "text": "力量"},
                    ],
                },
                {
                    "id": 73,
                    "text": "A. 切实 B. 创新",
                    "options": [
                        {"code": "A", "text": "切实"},
                        {"code": "B", "text": "创新"},
                    ],
                },
            ],
        },
        {
            "part": "第三部分",
            "description": "哪个答案最接近地描述了你通常的思考和行为方式？",
            "questions": [
                {
                    "id": 74,
                    "text": "你觉得被许多人围着?",
                    "options": [
                        {"code": "A", "text": "让你感到更有精神"},
                        {"code": "B", "text": "常让你精力衰竭"},
                    ],
                },
                {
                    "id": 75,
                    "text": "作决定时，对于你来说更重要的是?",
                    "options": [
                        {"code": "A", "text": "权衡事实"},
                        {"code": "B", "text": "考虑人们的感受和观点"},
                    ],
                },
                {
                    "id": 76,
                    "text": "通常你更喜欢?",
                    "options": [
                        {"code": "A", "text": "提前安排好业余活动"},
                        {"code": "B", "text": "即兴地做事情"},
                    ],
                },
                {
                    "id": 77,
                    "text": "在聚会中，你?",
                    "options": [
                        {"code": "A", "text": "有时觉得无趣"},
                        {"code": "B", "text": "总是玩得很开心"},
                    ],
                },
                {
                    "id": 78,
                    "text": "多数情况下，你更喜欢?",
                    "options": [
                        {"code": "A", "text": "顺其自然"},
                        {"code": "B", "text": "按日程表办事"},
                    ],
                },
                {
                    "id": 79,
                    "text": "你通常?",
                    "options": [
                        {"code": "A", "text": "同大家打成一片"},
                        {"code": "B", "text": "倾向于独处"},
                    ],
                },
                {
                    "id": 80,
                    "text": "你喜欢?",
                    "options": [
                        {"code": "A", "text": "看清事态如何发展再作方案"},
                        {"code": "B", "text": "事先很早就作好准备"},
                    ],
                },
                {
                    "id": 81,
                    "text": "别人了解你?",
                    "options": [
                        {"code": "A", "text": "很容易"},
                        {"code": "B", "text": "很难"},
                    ],
                },
                {
                    "id": 82,
                    "text": "通常，你更喜欢上涉及的课程?",
                    "options": [
                        {"code": "A", "text": "概念和原则"},
                        {"code": "B", "text": "具体内容"},
                    ],
                },
                {
                    "id": 83,
                    "text": "在聚会中，你?",
                    "options": [
                        {"code": "A", "text": "自己聊得多"},
                        {"code": "B", "text": "听别人聊得多"},
                    ],
                },
                {
                    "id": 84,
                    "text": "你觉得自己更偏向于是一个?",
                    "options": [
                        {"code": "A", "text": "自发性的人"},
                        {"code": "B", "text": "有组织性的人"},
                    ],
                },
                {
                    "id": 85,
                    "text": "你?",
                    "options": [
                        {
                            "code": "A",
                            "text": "只同和自己有共同兴趣的人才能长时间的交谈",
                        },
                        {"code": "B", "text": "只要愿意，就能和几乎任何一个人谈个没完"},
                    ],
                },
                {
                    "id": 86,
                    "text": "当你开始了一项必须在一周内完成的大工程时，你会?",
                    "options": [
                        {"code": "A", "text": "花时间列出所要做的事情及其先后次序"},
                        {"code": "B", "text": "直接开始"},
                    ],
                },
                {
                    "id": 87,
                    "text": "被称为是更高的赞赏?",
                    "options": [
                        {"code": "A", "text": "有竞争力"},
                        {"code": "B", "text": "富有同情心"},
                    ],
                },
                {
                    "id": 88,
                    "text": "你觉得按方案行事?",
                    "options": [
                        {"code": "A", "text": "有时必要，即便令人不爽"},
                        {"code": "B", "text": "多数时候是有帮助的、适宜的"},
                    ],
                },
                {
                    "id": 89,
                    "text": "你愿在一个老板(教师)手下工作(学习)?",
                    "options": [
                        {"code": "A", "text": "脾气好，但前后不一致"},
                        {"code": "B", "text": "对人严厉，但有条理"},
                    ],
                },
                {
                    "id": 90,
                    "text": "总的来说，要完成一项重大任务，你倾向于?",
                    "options": [
                        {"code": "A", "text": "边做边考虑必须完成的事"},
                        {"code": "B", "text": "开始先确定每一个步骤"},
                    ],
                },
                {
                    "id": 91,
                    "text": "在社交场合中，你通常觉得?",
                    "options": [
                        {"code": "A", "text": "同一些人很难开展和维持长时间的谈话"},
                        {"code": "B", "text": "很容易同大多数人长时间谈话"},
                    ],
                },
                {
                    "id": 92,
                    "text": "你喜欢的处事方式是?",
                    "options": [
                        {"code": "A", "text": "坚持那些已经有效的方法"},
                        {"code": "B", "text": "分析哪些仍有错并挑战未解决的问题"},
                    ],
                },
                {
                    "id": 93,
                    "text": "你更喜欢按照做大多数事情?",
                    "options": [
                        {"code": "A", "text": "当天的感觉"},
                        {"code": "B", "text": "已定的日程表"},
                    ],
                },
            ],
        },
    ],
}

# 1. MBTI 计分规则定义（与文档对齐
SCORING_RULES = {
    # （一）判断 vs 知觉（J/P）
    "JP": {
        "A": [1, 4, 12, 14, 20, 28, 36, 41, 64, 76, 86],  # 选A得J分
        "B": [
            8,
            17,
            24,
            55,
            59,
            78,
            80,
            84,
            88,
            90,
            93,
        ],  # 选B得J分（文档描述可能需注意，实际按题目调整）
    },
    # （二）思维 vs 情感（T/F）
    "TF": {
        "A": [31, 33, 35, 43, 45, 47, 49, 56, 58, 61, 66, 75, 87],  # A=T
        "B": [6, 15, 21, 29, 37, 40, 51, 53, 70, 72, 89],  # B=F（文档中A=F/B=T的题目）
    },
    # （三）感觉 vs 直觉（S/N）
    "SN": {
        "A": [2, 9, 25, 30, 34, 39, 50, 52, 54, 60, 63, 73, 92],  # A=S
        "B": [
            5,
            11,
            18,
            22,
            27,
            44,
            46,
            48,
            65,
            67,
            69,
            71,
            82,
        ],  # B=N（文档中A=N/B=S的题目）
    },
    # （四）外倾 vs 内倾（E/I）
    "EI": {
        "A": [3, 7, 10, 19, 23, 32, 62, 74, 79, 81, 83],  # A=E
        "B": [13, 16, 26, 38, 42, 57, 68, 77, 85, 91],  # B=I（文档中A=I/B=E的题目）
    },
}

# 2. MBTI 类型描述（与文档对齐）
MBTI_DESCRIPTIONS = {
    "ISTJ": "安静、严肃，注重细节与责任感。做事有条理，坚守原则和传统，喜欢按计划行事。认真可靠，能系统性地完成任务，善于留意实际细节和规则。对工作和人际关系忠诚，重视效率和稳定性，不喜欢突然的变化或不切实际的想法。通过逻辑和事实分析问题，确保事情准确无误地完成。",
    "ISFJ": "安静、友好、有责任感和良知。坚决地致力于完成他们的义务。全面、勤勉、准确，忠诚、体贴，留心和记得他们重视的人的小细节，关心他们的感受。努力把工作和家庭环境营造得有序而温馨。",
    "INFJ": "寻求思想、关系、物质等之间的意义和联系。希望了解什么能够鼓励人，对人有很强的洞察力。有责任心，坚持自己的价值观。对于怎样更好的效劳群众有清晰的远景。在对于目标的实现过程中有方案而且果断坚决。",
    "INTJ": "在实现自己的想法和达成自己的目标时有创新的想法和非凡的动力。能很快洞察到外界事物间的规律并形成长期的远景方案。一旦决定做一件事就会开场规划并直到完成为止。多疑、独立，对于自己和他人能力和表现的要求都非常高。",
    "ISTP": "灵活、忍耐力强，是个安静的观察者直到有问题发生，就会马上行动，找到实用的解决方法。分析事物运作的原理，能从大量的信息中很快的找到关键的症结所在。对于原因和结果感兴趣，用逻辑的方式处理问题，重视效率。",
    "ISFP": "安静、友好、敏感、和蔼。享受当前。喜欢有自己的空间，喜欢能按照自己的时间表工作。对于自己的价值观和自己觉得重要的人非常忠诚有责任心。不喜欢争论和冲突。不会将自己的观念和价值观强加到别人身上。",
    "INFP": "理想主义，对于自己的价值观和自己觉得重要的人非常忠诚。希望外部的生活和自己内心的价值观是统一的。好奇心重，很快能看到事情的可能性，能成为实现想法的催化剂。寻求理解别人和帮助他们实现潜能。适应力强，灵活，善于承受，除非是有悖于自己的价值观的。",
    "INTP": "对于自己感兴趣的任何事物都寻求找到合理的解释。喜欢理论性的和抽象的事物，热衷于思考而非社交活动。安静、内向、灵活、适应力强对于自己感兴趣的领域有超凡的集中精力深度解决问题的能力。多疑有时会有点挑剔，喜欢分析。",
    "ESTP": "灵活、忍耐力强，实际，注重结果。觉得理论和抽象的解释非常无趣喜欢积极地采取行动解决问题。注重当前，自然不做作，享受和他人在起的时刻。喜欢物质享受和时尚。学习新事物最有效的方式是通过亲身感受和练习。",
    "ESFP": "外向、友好、承受力强。热爱生活、人类和物质上的享受。喜欢和别人一起将事情做成功。在工作中讲究常识和实用性，并使工作显得有趣。灵活、自然不做作，对于新的任何事物都能很快地适应。学习新事物最有效的方式是和他人一起尝试。",
    "ENFP": "热情洋溢、富有想象力。认为人生有很多的可能性。能很快地将事情和信息联系起来，然后很自信地根据自己的判断解决问题。总是需要得到别人的认可，也总是准备着给与他人赏识和帮助。灵活、自然不做作，有很强的即兴发挥的能力，言语流畅。",
    "ENTP": "反响快、睿智，有鼓励别人的能力，警觉性强、直言不讳。在解决新的、具有挑战性的问题时机智而有策略。善于找出理论上的可能性，然后再用战略的眼光分析。善于理解别人。不喜欢例行公事，很少会用一样的方法做一样的事情，倾向于一个接一个的开展新的爱好。",
    "ESTJ": "实际、现实主义。果断，一旦下决心就会马上行动。善于将工程和人组织起来将事情完成，并尽可能用最有效率的方法得到结果。注重日常的细节。有一套非常清晰的逻辑标准，有系统性地遵循，并希望他人也同样遵循。在实施方案时强而有力。",
    "ESFJ": "热心肠、有责任心、合作。希望周边的环境温而和谐，并为此果断地执行。喜欢和他人一起准确并及时地完成任务。事无巨细都会保持忠诚。能体察到他人在日常生活中的所需并竭尽全力帮助。希望自己和自己的所为能受到他人的认可和赏识。",
    "ENFJ": "热情、为他人着想、易感应、有责任心。非常注重他人的感情、需求和动机。善于发现他人的潜能，并希望能帮助他们实现。能成为个人或群体成长和进步的催化剂。忠诚，对于赞扬和批评都会积极地回应。友善、好社交。在团体中能很好地帮助他人，并有鼓舞他人的领导能力。",
    "ENTJ": "坦诚、果断，有天生的领导能力。能很快看到公司/组织程序和政策中的不合理性和低效能性，开展并实施有效和全面的系统来解决问题。善于做长期的方案和目标的设定。通常见多识广，博览群书，喜欢拓广自己的知识面并将此分享给他人。在陈述自己的想法时非常强而有力。",
}


# 3. 核心计算逻辑
def calculate_mbti(answers: Dict[int, str]) -> str:
    """
    根据答题结果计算MBTI类型
    :param answers: {题目编号: 选项A/B, ...} （题目编号从1开始）
    :return: MBTI类型（如"ISFJ"）
    """
    scores = {
        "EI": {"E": 0, "I": 0},
        "SN": {"S": 0, "N": 0},
        "TF": {"T": 0, "F": 0},
        "JP": {"J": 0, "P": 0},
    }

    # 逐题计分
    for q_num, choice in answers.items():
        for dim, rule in SCORING_RULES.items():
            for direction, q_list in rule.items():
                if q_num in q_list:
                    scores[dim][direction] += 1

    # 维度判定（选分高的，同分可按文档规则或自定义）
    ei = "E" if scores["EI"]["E"] > scores["EI"]["I"] else "I"
    sn = "S" if scores["SN"]["S"] > scores["SN"]["N"] else "N"
    tf = "T" if scores["TF"]["T"] > scores["TF"]["F"] else "F"
    jp = "J" if scores["JP"]["J"] > scores["JP"]["P"] else "P"

    return f"{ei}{sn}{tf}{jp}"

####################
#        SDS       #
####################
sds_tests = {
    "sds_assessment": {
        "instruction": "请完成以下20道自测题目，根据你最近的感受和经历如实作答，选出最符合的一项。",
        "questions": [
             {"id": 1, "content": "我感到情绪沮丧，郁闷。", "reverse_scoring": False},  # 修改：false -> False
            {"id": 2, "content": "我感到早晨心情最好。", "reverse_scoring": True},   # 修改：true -> True
            {"id": 3, "content": "我要哭或想哭。", "reverse_scoring": False},
            {"id": 4, "content": "我夜间睡眠不好。", "reverse_scoring": False},
            {"id": 5, "content": "我吃饭象平时一样多。", "reverse_scoring": True},
            {"id": 6, "content": "我的性功能正常。", "reverse_scoring": True},
            {"id": 7, "content": "我感到体重减轻。", "reverse_scoring": False},
            {"id": 8, "content": "我为便秘烦恼。", "reverse_scoring": False},
            {"id": 9, "content": "我的心跳比平时快。", "reverse_scoring": False},
            {"id": 10, "content": "我无故感到疲劳。", "reverse_scoring": False},
            {"id": 11, "content": "我的头脑象往常一样清楚。", "reverse_scoring": True},
            {
                "id": 12,
                "content": "我做事情象平时一样不感到困难。",
                "reverse_scoring": True,  # 修改：True（注意大小写）
            },
            {
                "id": 13,
                "content": "我坐卧不安，难以保持平静。",
                "reverse_scoring": False,
            },
            {"id": 14, "content": "我对未来感到有希望。", "reverse_scoring": True},
            {"id": 15, "content": "我比平时更容易激怒。", "reverse_scoring": False},
            {"id": 16, "content": "我觉得决定什么事很容易。", "reverse_scoring": True},
            {
                "id": 17,
                "content": "我感到自己是有用的和不可缺少的人。",
                "reverse_scoring": True,
            },
            {"id": 18, "content": "我的生活很有意义。", "reverse_scoring": True},
            {
                "id": 19,
                "content": "假若我死了别人会过得更好。",
                "reverse_scoring": False,
            },
            {
                "id": 20,
                "content": "我仍旧喜爱自己平时喜爱的东西。",
                "reverse_scoring": True,
            },
        ],
        "scoring_rules": {
            "options": [
                "没有或很少时间",
                "小部分时间",
                "相当多时间",
                "绝大部分或全部时间",
            ],
            "standard_scoring": {
                "normal": 1,
                "little": 2,
                "considerable": 3,
                "most_or_all": 4,
            },
            "reverse_scoring": {
                "normal": 4,
                "little": 3,
                "considerable": 2,
                "most_or_all": 1,
            },
            "calculation_steps": [
                "将20个项目的得分相加，得到总分（粗分）。",
                "用粗分乘以1.25后取整数部分，得到标准分。",
            ],
        },
        "assessment_standards": {
            "threshold": 53,
            "levels": [
                {"range": "低于53分", "description": "无抑郁"},
                {"range": "53-62分", "description": "轻度抑郁"},
                {"range": "63-72分", "description": "中度抑郁"},
                {"range": "72分以上", "description": "重度抑郁"},
            ],
        },
    }
}
# 反向计分题题号（2,5,6,11,12,14,16,17,18,20）
REVERSE_QUESTIONS_SDS = {2, 5, 6, 11, 12, 14, 16, 17, 18, 20}

def get_sds_depression_level(standard_score: int) -> str:
    """根据标准分获取抑郁程度"""
    if standard_score < 53:
        return "无抑郁"
    elif 53 <= standard_score <= 62:
        return "轻度抑郁"
    elif 63 <= standard_score <= 72:
        return "中度抑郁"
    else:
        return "重度抑郁"


def get_sds_interpretation(standard_score: int) -> str:
    """根据标准分获取结果解释"""
    if standard_score < 53:
        return "您的标准分为{0}，目前没有抑郁症状或症状轻微。".format(standard_score)
    elif 53 <= standard_score <= 62:
        return "您的标准分为{0}，属于轻度抑郁。建议保持良好的生活习惯，适当调整心态，必要时可寻求专业帮助。".format(
            standard_score
        )
    elif 63 <= standard_score <= 72:
        return "您的标准分为{0}，属于中度抑郁。建议及时寻求心理咨询师或精神科医生的帮助，以便尽早调整状态。".format(
            standard_score
        )
    else:
        return "您的标准分为{0}，属于重度抑郁。建议尽快到正规医疗机构就诊，以便及时接受专业的诊断和治疗。".format(
            standard_score
        )



####################
# SAS（焦虑自评量表）#
####################


REVERSE_QUESTIONS_SAS = {5, 9, 13, 17, 19}
# 焦虑程度判断函数
def get_anxiety_level(standard_score):
    if standard_score < 50:
        return "无焦虑"
    elif 50 <= standard_score <= 59:
        return "轻度焦虑"
    elif 60 <= standard_score <= 69:
        return "中度焦虑"
    else:
        return "严重焦虑"

# 结果解释函数
def get_sas_interpretation(standard_score):
    level = get_anxiety_level(standard_score)
    sas_interpretations = {
        "无焦虑": "您的焦虑水平在正常范围内，心理状态良好。",
        "轻度焦虑": "您可能存在轻度焦虑，建议通过放松训练、调整生活节奏来缓解。",
        "中度焦虑": "您的焦虑水平适中，可能需要专业心理干预或咨询来改善。",
        "严重焦虑": "您的焦虑水平较高，建议尽快寻求专业心理医生的帮助和治疗。"
    }
    return sas_interpretations.get(level, "暂未提供该水平的解释")

####################
#     贝克抑郁      #
####################


# 抑郁程度判断函数
def get_baker_depression_level(total_score):
    if total_score < 10:
        return "很健康、无抑郁"
    elif 10 <= total_score <= 15:
        return "轻度情绪不良"
    elif 15 < total_score <= 25:
        return "已有抑郁"
    else:
        return "严重抑郁"

# 结果解释函数
def get_baker_interpretation(total_score):
    level = get_baker_depression_level(total_score)
    interpretations = {
        "很健康、无抑郁": "您的心理状态良好，没有抑郁倾向。",
        "轻度情绪不良": "您有轻度情绪不良，请注意调节生活节奏和心理状态。",
        "已有抑郁": "您可能存在抑郁情况，建议去看心理医生进行专业评估。",
        "严重抑郁": "您的抑郁程度较严重，必须尽快看心理医生进行干预治疗。"
    }
    return interpretations.get(level, "暂未提供该水平的解释")



